package vista;


import java.util.ArrayList;
import java.util.List;

import javax.swing.table.AbstractTableModel;

import modelo.DetalleProducto;

public class VentanaDetalleProductoTablaModel extends AbstractTableModel {

        private static String[] titulos = {"CodIngrediente","Ingrediente","Cantidad"};
        private List<DetalleProducto> listaIngred = new ArrayList<DetalleProducto>();
        
        public VentanaDetalleProductoTablaModel(List<DetalleProducto> listaIngred) {
                super();
                this.listaIngred = listaIngred;
                this.fireTableDataChanged();
        }

        @Override
        public int getColumnCount() {           
                return titulos.length;
        }

        @Override
        public int getRowCount() {   
                return listaIngred.size();
        }

        @Override
        public Object getValueAt(int rowIndex, int columnIndex) {
                DetalleProducto detProducto = listaIngred.get(rowIndex); 
                switch (columnIndex) {
                case 0: return detProducto.getCodIngrediente();
                case 1: return detProducto.getDescripcionIng();
                case 2: return detProducto.getCantidadIng();
                }
                return null;
        }

        @Override
        public String getColumnName(int column) {
                return titulos[column];
        }       
        
        //Para que los campos de la columna cantidad de la tabla sean modificables
        public boolean isCellEditable(int row, int column) {
                if (column == 3)
        return true;
                return false;
    }
        
    public void setValueAt(Object value, int row, int column) {
        DetalleProducto detProducto = listaIngred.get(row);
           switch (column) {
               case 0:
                   detProducto.setCodIngrediente((String)value);
                  break;
               case 1:
                   detProducto.setDescripcionIng((String)value);
                  break;
               case 2:
                   detProducto.setCantidadIng(Float.parseFloat((String)value));
                  break;
               default:
                  System.out.println("Indice Invalido");
           }
           fireTableCellUpdated(row, column);
    }
}
